Computer products (e.g., hardware and/or software) typically have one or more associated settings that can be set and/or modified by an end user of the products. These settings are generally used for configuring a system and/or an application although they can be used for other purposes such as customizations, diagnostics, etc. The settings are generally stored in one or more data sources (e.g., a SQL database, Microsoft Active Directory™, registry, XML files, .txt files, .ini files, etc.). In order to manipulate these settings, most systems provide a friendly graphical user interface (GUI or UI). The UI to manipulate these settings can be referred to as a settings UI.
Conventionally, there are a variety of ways to implement such a settings UI. For example, Microsoft Management Console (MMC) can be employed for server applications, ASP (active server page)/HTML pages can be used for web-based applications, standard and/or custom Win32 controls can be used for client applications. The settings UI can include several UI controls (e.g., a checkbox, a list box, a combination box, a text box, a radio button, etc.). The UI control can be grouped together into one or more sections and/or pages.
Historically, code has been written to implement these UI controls. This code is often bulky, repetitive in nature, and error prone. Additionally, when new UI control(s) (e.g., for new configuration settings) are added, additional code is written, for example, for data retrieval/storage into a data source, for error handling, for validating data received in the control(s), for handling UI event(s) (e.g., click of a button, obtaining focus, etc.) and the like. The process of code creation can be a cumbersome exercise and can often be the source of code bugs.
Additionally, as underlying UI technology changes, UI settings code is generally rewritten in order to reflect the change. For example, if a certain settings UI is implemented using MMC for a first version of a product and then there is need to provide a web interface in a later version of the product, new code would have to be developed.
Similarly, if a data source changes, much of the code would need to be rewritten. For example if settings are stored in SQL and then moved to Active Directory, the code in existing settings pages would need to be altered to use the new data source.